﻿<?php
Class machine{
	/*Paramètre règlant l'accès à la BDD. doit etre présent dans TOUTES les classes*/
	private $dbh;

	/*paramètres correspondants aux colonnes de la BDD*/
	private $id;
	private $nom;
	private $ip;
	private $salle;

	/*Constructeur. Il va aller chercher la salle correspondant à l'ID et remplir les paramétres de l'objet avec les données de la BDD*/
	public function __construct($dbh, $id=NULL) {
		if($dbh != NULL){
			$this->dbh = $dbh;
			if($id != NULL){
				$stmt = $this->dbh->prepare("SELECT id_machine, nom, salle, IP  FROM `machine_bliss` WHERE id_machine=:id");
				$stmt->bindParam(':id', $id);
				if($stmt->execute()) {
					while ($row = $stmt->fetch()) {
						$this->id = $row['id_machine'];
						$this->nom = $row['nom'];
						$this->salle = new Salle($dbh, $row['salle']);
						$this->ip = $row['IP'];
					}
				}
			}else{
				$this->id = NULL;
				$this->nom = NULL;
				$this->salle = new Salle($dbh, NULL);
				$this->ip = NULL;
			}
		}
	}

	/*Getters et Setters pour chaque paramétre*/

	public function getId(){
		return $this->id;
	}

	public function setId($id){
		$this->id = $id;
	}

	public function getIP(){
		return $this->ip;
	}

	public function setIP($ip){
		$this->ip = $ip;
	}

	public function getNom(){
		return $this->nom;
	}

	public function setNom($nom){
		$this->nom = $nom;
	}

	public function getSalle(){
		return $this->salle;
	}

	public function setSalle($salle){
		$this->salle = new Salle($this->dbh, $salle);
	}


	/*fonction de sauvegarde ou d'ajout*/
	public function save(){
		if($this->id != NULL){
			$stmt = $this->dbh->prepare("UPDATE `machine_bliss` SET nom=:nom, IP=:IP, salle=:salle WHERE id_machine=:id");
			$stmt->bindParam(':nom', $this->nom);
			$stmt->bindParam(':IP', $this->ip);
			$stmt->bindParam(':salle', $identifier);
			$identifier = $this->salle->getId();
			$stmt->bindParam(':id', $this->id);
				
			$ret = $stmt->execute();
		}elseif($this->checkParam($this->nom) && $this->checkParam($this->ip)){
			$stmt = $this->dbh->prepare("INSERT INTO `machine_bliss` SET nom=:nom, IP=:IP, salle=:salle");
			$stmt->bindParam(':nom', $this->nom);
			$stmt->bindParam(':IP', $this->ip);
			$stmt->bindParam(':salle', $identifier);
			$identifier = $this->salle->getId();
				
			$ret = $stmt->execute();
			$this->id = $this->dbh->lastInsertId();
		}
		else{
			return false;
		}
		return $ret;
	}
	
	/*Fonction de suppression*/
	public function delete(){
		if($this->id != NULL){
			$liste_incident=$this->dbh->getAllIncidentByMachine($this->id);
			foreach($liste_incident as $incident){
				$ink=new Incident($this->dbh, $incident["id_incident"]);
				$ink->delete();
			}
			
			
			$stmt = $this->dbh->prepare("DELETE FROM `machine_bliss` WHERE id_machine=:id");
			$stmt->bindParam(':id', $this->id);
				
			$ret = $stmt->execute();
			return $ret;
		}
	}
		/*Fonction pour verifier que le parametre en argument n'est pas vide*/
	private function checkParam($param){
		if($param == NULL || $param == '')
			return false;
		else
			return true;
	}
}

